#!/usr/bin/env python3
import os
from http.server import HTTPServer as BaseHTTPServer, SimpleHTTPRequestHandler

from loguru import logger

logger.add("tool.log", retention="3 days")


class HTTPHandler(SimpleHTTPRequestHandler):
    """This handler uses server.base_path instead of always using os.getcwd()"""

    def translate_path(self, path):
        path = SimpleHTTPRequestHandler.translate_path(self, path)
        # # getcwd() returns current working directory of a process
        # # method in Python is used to get a relative filepath to the given path either from the current working directory or from the given directory.
        relpath = os.path.relpath(path, os.getcwd())
        fullpath = os.path.join(self.server.base_path, relpath)
        return fullpath

    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        SimpleHTTPRequestHandler.end_headers(self)


class HTTPServer(BaseHTTPServer):
    """The main server, you pass in base_path which is the path you want to serve requests from"""

    def __init__(self, base_path, server_address=("0.0.0.0", 8000), RequestHandlerClass=HTTPHandler):
        logger.info("http文件服务初始化,监听：{}[{}]", server_address,base_path)
        self.base_path = base_path
        BaseHTTPServer.__init__(self, server_address, RequestHandlerClass)


if __name__ == '__main__':
    web_dir = "C:/Users/Administrator/Desktop/11/"
    httpd = HTTPServer(web_dir)
    httpd.serve_forever()
